var express = require("express");
var router = express.Router();
// 1.导入验证数据的中间件
const expressJoi = require("@escook/express-joi");

// 当前项目推荐使用multer来解析multipart/from-data格式的表单数据
// npm i multer@1.4.2
// 导入解析fromdata格式表单数据的包
const multer = require("multer");
// 导入处理路径的核心模块
const path = require("path");
// 创建 multer 的实例对象，通过 dest 属性指定文件的存放路径
const upload = multer({ dest: path.join(__dirname, "../uploads") });

// 引入封装的获取验证码的方法
var art_handler = require("../controllers/artcate");
const {
  add_cate_schema,
  delete_cate_schema,
  get_cate_schema,
  update_cate_schema,
  add_article_schema,
} = require("../schema/artcate");
// 获取文章分类的列表
router.get("/cates", art_handler.getArticleClassification);
// 新增文章
router.post(
  "/newArticle",
  expressJoi(add_cate_schema),
  art_handler.newArticleCategory
);

// 删除文章
router.get(
  "/deleteCate/:id",
  expressJoi(delete_cate_schema),
  art_handler.deleteCateById
);

// 通过id获取文章分类得路由
router.get(
  "/cate/:id",
  expressJoi(get_cate_schema),
  art_handler.getArtCateById
);

// 更新文章分类的路由
router.post(
  "/updateCate",
  expressJoi(update_cate_schema),
  art_handler.updateCateById
);

// 发布新文章
// 发布新文章的路由
// upload.single() 是一个局部生效的中间件，用来解析 FormData 格式的表单数据
// 将文件类型的数据，解析并挂载到 req.file 属性中
// 将文本类型的数据，解析并挂载到 req.body 属性中
// 在当前的路由中，先后使用了两个中间件：先使用 multer 解析表单数据,再使用 expressJoi 对解析的表单数据进行验证
router.post(
  "/add",
  upload.single("cover_img"),
  expressJoi(add_article_schema),
  art_handler.addArticle
);

module.exports = router;
